package com.christina.engine.strategy;

import com.christina.engine.strategy.model.RoutingDecision;
import com.christina.engine.strategy.model.RoutingContext;

/**
 * 路由策略接口
 * 定义了路由决策的基本契约
 * 
 * @author Christina
 */
public interface RoutingStrategy {
    
    /**
     * 执行路由决策
     * 
     * @param context 路由上下文
     * @return 路由决策结果
     */
    RoutingDecision makeDecision(RoutingContext context);
    
    /**
     * 获取策略名称
     * 
     * @return 策略名称
     */
    String getStrategyName();
    
    /**
     * 获取策略优先级
     * 数值越大优先级越高
     * 
     * @return 优先级
     */
    int getPriority();
    
    /**
     * 检查策略是否适用于当前上下文
     * 
     * @param context 路由上下文
     * @return 是否适用
     */
    boolean isApplicable(RoutingContext context);
    
    /**
     * 获取策略的置信度
     * 
     * @param context 路由上下文
     * @return 置信度 (0.0 - 1.0)
     */
    double getConfidence(RoutingContext context);
}